#pragma once

#include <iostream>
#include <string>
#include <sys/time.h>
#include "Util.hpp"

namespace ns_Log
{
    using namespace ns_Util;
    // 创建日志等级
    enum{
        INFO,
        DEBUG,
        WARNING,
        ERROR,
        FATAL
    };
    //日志功能实现
    inline std::ostream &Log(const std::string &level, const std::string &file_name, int line)
    {
        //打印日志的等级
        std::string message;
        message += "[";
        message += level;
        message += "] ";

        //打印文件名称
        message += "[";
        message += file_name;
        message += "] ";

        //打印文件行号
        message += "[";
        message += line;
        message += "] ";

        //打印文件时间
        message += "[";
        message += TimeUtil::GetTimeStamp();
        message += "] ";

        //注意，cout内部是包含缓冲区的
        std::cout << message; //这里不要加endl,不进行刷新

        return std::cout;
    }
    //使用开放式日志
    //LOG(INFO) << "message" << "\n";
    #define LOG(level) Log(#level, __FILE__, __LINE__)
}